home *** CD-ROM | disk | FTP | other *** search
/ Hottest 6 / Hottest 6 (1996)(PDSoft)[!].iso / software / fredfish / 1059.lha / Programs / MathPlot / Macros / apig.mapl next >
Text File  |  1994-12-15  |  5KB  |  230 lines

  1. /* Example, how to use APIG with MathPlot      */
  2. /* Plots two functions with variable parameter */
  3. /* Needs APIG.library in LIBS:                 */
  4.  
  5. options results
  6.  
  7. IF ~SHOW('L','rexxsupport.library') THEN
  8.    CALL ADDLIB('rexxsupport.library',0,-30)
  9.  
  10. IF ~SHOW('L','apig.library') THEN
  11.    CALL ADDLIB('apig.library',0,-30)
  12.  
  13. /* Get Name of the screen */
  14. info stem a.
  15. screen = a.pubscreen
  16.  
  17. /* The two functions */
  18. setfunc "0 cos(a-asin(x))"
  19. setfunc "1 cos(pi-asin(x)-a)"
  20. setintervall "xmin -1 xmax 1 ymin -1 ymax 1 xaxis 0 yaxis 0"
  21.  
  22.  
  23.  
  24.  
  25. call set_apig_globals()
  26.  
  27. scr  = Lockpubscreen(screen)
  28.  
  29.  
  30. scrvinfo     = GETVISUALINFO(scr)           /* NewGadgets need this  */
  31.  
  32. scrfont      = GETVALUE(scr,40,4,'p')       /* NewGadgets need this  */
  33.                                             /* points to TextAttr    */
  34.  
  35. glistpointer = ALLOCVEC(4,MEMF_CLEAR)       /* a pointer for context */
  36.  
  37. conxgad      = CREATECONTEXT(glistpointer)  
  38.  
  39. previousgadget = conxgad
  40.  
  41. myid = 10
  42.  
  43.  
  44. /* we now create and initialize a NewGadget structure */
  45.  
  46. newgadx = MAKENEWGADGET(scrvinfo,scrfont,10,27 ,145,15,"Slide Me !",
  47.                         ,PLACETEXT_ABOVE,myid,null())
  48.  
  49. testtext = "Test %2ld"
  50.  
  51.    gadtext = ALLOCVEC(length(testtext)+1,MEMF_CLEAR)
  52.    call export(gadtext,testtext)
  53.  
  54.    gadtaglist = ALLOCATETAGITEMS(10)
  55.  
  56.    call SETTAGSLOT(gadtaglist,0,GTSL_MIN,'n',-20)
  57.    call SETTAGSLOT(gadtaglist,1,GTSL_MAX,'n',20)
  58.    call SETTAGSLOT(gadtaglist,2,GTSL_LEVEL,'n',0)
  59.    call SETTAGSLOT(gadtaglist,3,GTSL_MAXLEVELLEN,'n',30)
  60.    call SETTAGSLOT(gadtaglist,4,GTSL_LEVELFORMAT,'p',gadtext)
  61.    call SETTAGSLOT(gadtaglist,5,GTSL_LEVELPLACE,'n',PLACETEXT_BELOW)
  62.    call SETTAGSLOT(gadtaglist,6,TAG_DONE,'n',0) 
  63.  
  64.       
  65.  
  66. /*
  67. previousgadget = CREATEGADGET(SLIDER_KIND,previousgadget,newgadx,
  68.                               ,GTSL_MIN,1,
  69.                               ,GTSL_MAX,16,
  70.                               ,GTSL_LEVEL,6,
  71.                               ,GTSL_MAXLEVELLEN,30,
  72.                               ,GTSL_LEVELFORMAT,"test %2ld",
  73.                               ,TAG_DONE,0)
  74. */
  75.  
  76. previousgadget = CREATEGADGETA(SLIDER_KIND, previousgadget, newgadx,gadtaglist)
  77.  
  78. /*
  79. say c2x(GTSL_MIN) "," c2x(GTSL_LEVEL) "," c2x(GTSL_LEVELFORMAT)
  80. */
  81.  
  82. call openwin() 
  83.  
  84.  
  85. call unlockpubscreen(null(),scr)
  86.  
  87. call FREEVISUALINFO(scrvinfo)
  88.  
  89. call FREEGADGETS(conxgad)
  90.  
  91. call FREETHIS(newgadx)
  92.  
  93. call FREETAGITEMS(gadtaglist)
  94.  
  95. call FREEVEC(glistpointer)
  96.  
  97. call FREEVEC(gadtext)
  98.  
  99.  
  100. exit
  101.  
  102. /* ------------------------------------------------------------ */
  103.  
  104. openwin:
  105.  
  106. portname = "scrtagsport"
  107. p = openport(portname)  
  108.  
  109. wintitle = "MathPlot+APIG"
  110.  
  111. wintaglist = makewintaglist()  /* build tag list for window */
  112.  
  113. win = openwindowtaglist(portname,null(),wintaglist)
  114.  
  115. call GT_REFRESHWINDOW(win,null())
  116. exitme = 0
  117. do while exitme = 0
  118.    
  119.      call waitpkt(portname)
  120.  
  121.      do forever 
  122.   
  123.         msg = '0000 0000'x
  124.         msg = getpkt(portname)
  125.  
  126.         if msg = '0000 0000'x then leave
  127.         
  128.         msgclass  = getarg(msg,0)
  129.         gadcode   = getarg(msg,1)
  130.         gadaddr   = getarg(msg,8)
  131.         gadid     = getarg(msg,9)
  132.  
  133. if gadcode > 32768 then gadcode = -(65536 - gadcode)
  134.  
  135.         x = reply(msg,0)  
  136.       
  137.         select
  138.          when msgclass = IDCMP_CLOSEWINDOW then exitme = 1
  139.          when msgclass = IDCMP_MOUSEMOVE then do
  140. /*
  141.              if gadid = 10 then
  142.               do
  143. */
  144.                string=getstrgad(win, gadid, null())
  145. /*
  146.                say "Gadget" c2x(gadaddr) "," gadid  ", Code" gadcode "," c2x(previousgadget)
  147. */
  148.                setconst "a " gadcode"/20"
  149.                plot 0 normal
  150.                plot 1 normal
  151. /*
  152.               end
  153. */
  154.             end
  155.            otherwise nop
  156.         end
  157.      end  
  158.    
  159. end
  160.     
  161. call CLOSEWINDOW(win)
  162.  
  163. call FREETAGITEMS(wintaglist)
  164.  
  165. call FREEVEC(mytitle)
  166.  
  167.  
  168. return 1
  169.  
  170. /* ------------------------------------------------------------ */
  171.  
  172. makewintaglist:
  173.  
  174.    winidcmp = IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_MOUSEMOVE+IDCMP_GADGETDOWN
  175.  
  176.    winflags = WFLG_CLOSEGADGET + WFLG_DRAGBAR
  177.    /*
  178.     + WFLG_GIMMEZEROZERO
  179. */
  180.  
  181.    mytaglist = ALLOCATETAGITEMS(40)
  182.  
  183.    call SETTAGSLOT(mytaglist,0,WA_LEFT,'n',10)   
  184.  
  185.    call SETTAGSLOT(mytaglist,1,WA_TOP,'n',50)    
  186.  
  187.    call SETTAGSLOT(mytaglist,2,WA_WIDTH,'n',170) 
  188.  
  189.    call SETTAGSLOT(mytaglist,3,WA_HEIGHT,'n',60) 
  190.  
  191.    call SETTAGSLOT(mytaglist,4,WA_DETAILPEN,'n',2) 
  192.  
  193.    call SETTAGSLOT(mytaglist,5,WA_BLOCKPEN,'n',3) 
  194.  
  195.    call SETTAGSLOT(mytaglist,6,WA_MINWIDTH,'n',40) 
  196.  
  197.    call SETTAGSLOT(mytaglist,7,WA_MAXWIDTH,'n',640) 
  198.  
  199.    call SETTAGSLOT(mytaglist,8,WA_MINHEIGHT,'n',80) 
  200.  
  201.    call SETTAGSLOT(mytaglist,9,WA_MAXHEIGHT,'n',400) 
  202. /*
  203.    call SETTAGSLOT(mytaglist,10,WA_SIZEGADGET,'n',1) 
  204. */
  205.    call SETTAGSLOT(mytaglist,10,WA_DRAGBAR,'n',1) 
  206.  
  207.    call SETTAGSLOT(mytaglist,11,WA_CLOSEGADGET,'n',1) 
  208.  
  209.    call SETTAGSLOT(mytaglist,12,WA_ACTIVATE,'n',1) 
  210. /*
  211.    call SETTAGSLOT(mytaglist,14,WA_GIMMEZEROZERO,'n',1)
  212. */
  213.    mytitle = ALLOCVEC(length(wintitle)+1,MEMF_CLEAR)
  214.    call export(mytitle,wintitle)
  215.    call SETTAGSLOT(mytaglist,13,WA_TITLE,'p',mytitle) 
  216.  
  217.    call SETTAGSLOT(mytaglist,14,WA_FLAGS,'n',winflags) 
  218.  
  219.    call SETTAGSLOT(mytaglist,15,WA_IDCMP,'n',winidcmp) 
  220.  
  221.    call SETTAGSLOT(mytaglist,16,WA_CUSTOMSCREEN,'p',scr) 
  222.    
  223.    call SETTAGSLOT(mytaglist,17,WA_GADGETS,'p',conxgad) 
  224.  
  225.    call SETTAGSLOT(mytaglist,18,TAG_DONE,'n',0) 
  226.  
  227. return mytaglist
  228.  
  229.  
  230.